home *** CD-ROM | disk | FTP | other *** search
/ Belgian Amiga Club - ADF Collection / BS1 part 34.zip / BS1 part 34 / Aztec C 5.0a disk 1.adf / read.me < prev    next >
Text File  |  1990-01-23  |  17KB  |  374 lines

  1.                           AZTEC C FOR THE AMIGA
  2.                               RELEASE NOTES
  3.                               VERSION 5.0a
  4.                                  01/09/89
  5.  
  6.                               TECH SUPPORT
  7.                               ------------
  8.  
  9. A new phone support line has been set up exclusively to provide technical
  10. support for Amiga Aztec C 5.0a owners.  If you have problems or questions
  11. regarding the 5.0a release, you should call this number instead of the
  12. usual technical support number.
  13.  
  14.     Amiga Aztec C Tech. Support: (201)542-1798
  15.  
  16. This line is open from 10-12 EST and 2-5 EST Mondays->Fridays.
  17.  
  18.                              DISK CONTENTS
  19.                              -------------
  20. The file 'contents' on disk one lists all of the files contained on the
  21. four Aztec distribution disks, along with a brief description of each file.
  22. A unique 'crc' number is also given for each number, which was obtained from
  23. the Aztec utility crc.  This number may be used if you suspect that one of
  24. your files may be damaged - simply run the crc on the suspect file, and
  25. compare it with the number in the 'contents' file.
  26.  
  27.                               INSTALLATION
  28.                               ------------
  29.  
  30. Aztec C v5.0a may be installed on either a dual-floppy drive or a hard
  31. drive system.  Single-floppy machines are not supported.  To install
  32. your package, from the CLI prompt type:
  33.  
  34.         execute df0:install
  35.  
  36. This will start up an installation script, which will allow you to
  37. choose between hard disk and dual-floppy installation.
  38.  
  39. Hard Disk Installation
  40. ----------------------
  41.  
  42. If you choose hard disk installation, the install script will call up
  43. the program 'hdinstall'.  This program allows you to customize your 
  44. installation to suit your needs.  Specifically, you may specify the
  45. directories in which your files should go on your hard disk, as well as 
  46. which sets of libraries to copy, and whether source-code examples 
  47. should also be copied.
  48.  
  49. The following information may be specified regarding the directories and
  50. drives that will be used:
  51.  
  52.     SOURCE DRIVE 
  53.     This is the device (df0:, df1:, etc.) from which the installation 
  54.     program should copy disks FROM.  It is set to device 'df0:' by default.  
  55.     Note that if you change this you MUST include the ending ':' in the 
  56.     device name (i.e., you must say 'df2:', not 'df2').
  57.  
  58.     DESTINATION DRIVE
  59.     This is the device (dh0:, etc.) to which the installation program
  60.     should copy the Aztec files.  This defaults to 'dh0:'.  Note that if you
  61.     change this you MUST include the ending ':' in the device name.
  62.  
  63.     MAIN DIRECTORY
  64.     This will be your "main" Aztec directory.  The other directories for
  65.     libraries, header files, etc. will always be created as subdirectories
  66.     beneath this directory.  The startup script, 'Aztec.sh', is placed into
  67.     this directory.  The name of this directory defaults to 'Aztec'.
  68.  
  69.     EXECUTABLE DIRECTORY
  70.     This is the sub-directory in which all executable files in the Aztec C
  71.     system will be placed, including the compiler assembler, and linker.
  72.     This defaults to 'Bin' under the main directory.
  73.  
  74.     INCLUDE DIRECTORY
  75.     This is the sub-directory in which all C header files will be placed.
  76.     It defaults to  'Include'.
  77.  
  78.     LIBRARY DIRECTORY
  79.     This is the sub-directory in which your Aztec C linker-libraries will
  80.     be placed.  This defaults to 'Lib'.
  81.  
  82. You may additionally select which sets of libraries you wish to
  83. install on the system.  The various combinations are large code/large data,
  84. small code/small data, 16-bit integer size, 32-bit integer size, and 
  85. the various types of floating point support.  You should consult your
  86. Aztec C Reference Manual for details concerning these various libraries.
  87. The default library set is the small code/small data, 32-bit integer
  88. libraries, as well as the Manx IEEE floating point library.
  89.  
  90. At any point, you may click on "Reset Defaults" to restore the default
  91. directory structure and library options.
  92.  
  93. When you are finished selecting your options, you should then click
  94. on 'BEGIN INSTALLATION'.  The installation program will then prompt you
  95. for disks as needed.
  96.  
  97. After the installation program is complete, you may then change directories
  98. to your MAIN AZTEC directory.  From there, you should type:
  99.  
  100.         execute Aztec.sh
  101.  
  102. This shell file will then initialize your system for use with Aztec C, which
  103. should be done each time you reboot the machine (for this reason, you may
  104. wish to place the contents of the Aztec.sh file directly in your 
  105. 'Startup-Sequence' file).  Your system will then be installed, and you'll
  106. be ready to use Aztec C!
  107.  
  108. FLOPPY DISK INSTALLATION
  109. ------------------------
  110.  
  111. The two-drive floppy disk installation is handled jointly by the 'install'
  112. script and the program 'floppyinst'.  Two blank (but not necessarily 
  113. formatted) disks are required for this installation.
  114.  
  115. The floppy installation script will first prompt you whether or not your
  116. second floppy drive is designated as 'df1:'.  If you own an Amiga 1000 or
  117. Amiga 500 system with an external floppy drive, you should answer 'yes'
  118. to this question.  If you own an Amiga 2000 or 2500 with one internal
  119. and one external drive, than the answer to this question should be 'no'.
  120. This is because the external drive designation on 2000 and 2500 systems
  121. is 'df2:' instead of the usual 'df1:'.  If your 2000 or 2500 has 2 
  122. internal floppies, then you should answer 'yes', as the second internal
  123. drive is considered 'df1:'.
  124.  
  125. The script will then copy the 1st Aztec distribution disk to your first
  126. blank floppy, and prepare it for normal booting.  It will then prompt 
  127. you for the second disk, which will be formatted with the name 'Az2:'.
  128. Please insure that NOTHING of importance is contained on either of
  129. these disks, as ALL information on them will be lost during the
  130. installation process.
  131.  
  132. After formatting the second disk, the install script will then invoke the
  133. 'floppyinst' program.  This program will allow you to choose which
  134. library set you wish to install on your disks.  Only one set may be
  135. chosen due to disk space limitations.  When you have chosen your libraries,
  136. you should click 'OK'.  The program will then prompt you for the Aztec
  137. distribution disks, starting with disk 2, which should be placed in your 1st
  138. floppy drive (df0:).  When installation is complete, you should reboot
  139. your system with the new disk 1 in your first floppy drive, and the second
  140. disk in the second drive.  After the system boots, type:
  141.  
  142.         cd Az2:
  143.  
  144. to change to your work-disk.
  145.  
  146.                         VERSION 3.6A COMPATABILITY NOTES
  147.                         --------------------------------
  148.  
  149. Several important things have changed between the 3.6a and 5.0a versions.
  150. The most important differences are:
  151.  
  152.         COMPILER OPTIONS
  153.         Almost all compiler options have changed in version 5.0, which
  154.         means you will eventually have to translate your script and
  155.         makefiles to use the new options.  However, we have provided
  156.         a 'compatability-switch' which will allow you to use the old
  157.         options.  This switch is '-3'.  Any 3.6a compiler options you
  158.         have MUST come after a '-3' option for them to be recognized
  159.         properly.  For example, the compile line:
  160.  
  161.                 cc -n +c +d test.c
  162.  
  163.         Should be changed to:
  164.  
  165.                 cc -3 -n +c +d test.c
  166.  
  167.         To avoid having to change all your makefiles, you may optionally
  168.         set the '-3' option using the CCOPTS environment variable.  The
  169.         command:
  170.  
  171.                 set CCOPTS=-3
  172.  
  173.         will in effect set the default option parsing to 3.6a syntax.  Note
  174.         that if you do use the -3 option, any 5.0a options must be prefixed
  175.         with '-5'.  The '-5' and '-3' options may be mixed freely on the
  176.         command line.  See the compiler reference documentation for details.
  177.  
  178.         ANSI COMPILER CHANGES
  179.         The way the compiler handles expressions and other language rules
  180.         has changed somewhat from version 3.6a in order to be compatible
  181.         with the proposed ANSI standard.  These changes should not affect
  182.         most programs, but will change the behavior of some user code.  For
  183.         maximum source compatability with 3.6a, you should use the '-k'
  184.         compiler option.  This forces the compiler to evaluate C expresions
  185.         using Kernighan & Ritchie rules rather than ANSI rules.  The -k
  186.         option is recognized both under -5 and -3.  To achive maximum
  187.         3.6a compatability, it may be desirable to set CCOPTS as follows:
  188.  
  189.                 set "CCOPTS=-3 -k"
  190.  
  191.         The compiler will give the error "can't take address of
  192.         register class" for the following type of code:
  193.  
  194.             funky_func ()
  195.             {
  196.                 register char array[30];
  197.  
  198.                 call (array);
  199.             }
  200.  
  201.         Under previous versions of the compiler, the 'register' modifier
  202.         would simply be ignored.  However, ANSI requires that taking the 
  203.         address of a 'register' class object is always in error, even if the
  204.         object actually is placed in addressable memory.  For arrays this 
  205.         effectively means that you cannot access any elements within the
  206.         array, or use the array in any useful manner at all.
  207.  
  208.         The fix for this is to remove the 'register' modifier from the
  209.         array declaration.
  210.  
  211.         ANSI LIBRARY/HEADER CHANGES
  212.         Due to space limitations, we are not able to provide fully 3.6a
  213.         compatabile libraries along with the new ANSI compatable libraries.
  214.         This should not be a problem with most programs since the new 
  215.         libraries are mostly the same as those under 3.6a.  However, some 
  216.         code will still break.  Things to look out for include:
  217.  
  218.             - agetc() and aputc() are gone.  They may be defined as:
  219.                     #define agetc() putc()
  220.                     #define aputc(x,file) putc (x,file)
  221.  
  222.             - The size returned by the sizeof operator is now equivalent
  223.               to the new ANSI type 'size_t', as well as the result of
  224.               pointer subtraction.  Since 'size_t' is typedef'd to be
  225.               of type 'unsigned long', and 3.6a used 'unsigned int' for
  226.               these operations, code which depends on this will break.
  227.               Notable functions which require arguments of type 'size_t'
  228.               include malloc() and fread().  If you are using 16-bit
  229.               integers, you MUST cast the values passed to malloc()
  230.               and similar functions to type 'size_t' for the call to work.
  231.               For example, to allocate 50 bytes you should say:
  232.  
  233.                       cptr = malloc ((size_t)50);
  234.  
  235.               The best way to avoid problems with these is to always include
  236.               the appropriate header files.  The most commonly used ones
  237.               are stdio.h for standard I/O, string.h for string operations,
  238.               and stdlib.h for miscellaneous operations such as memory
  239.               allocation.
  240.  
  241.             - The module 'heapmem.o' is no longer included with the package.
  242.               All heap mangement, including the realloc() function, is
  243.               contained within the normal c.lib library.
  244.  
  245.         CALLING OF AMIGA FUNCTIONS
  246.         By default, if you #include the file functions.h, the compiler
  247.         will generate inline calls to Amiga resident library routines,
  248.         rather than calling an assembly language stub.  This method is
  249.         generally smaller and faster than using stub routines.  If for
  250.         some reason you wish to use the old stubs and want to compile with
  251.         functions.h, you should fist define the pre-processor macro
  252.         __NO_PRAGMAS before you include functions.h.  This should be done
  253.         like this:
  254.  
  255.                 #define __NO_PRAGMAS
  256.                 #include <functions.h>
  257.  
  258.          If you are not compiling with functions.h, then you don't need to
  259.          do anything - the linker will automatically pull in the appropriate
  260.          stub routines in from the standard C library.
  261.  
  262.          OLD OBJECT CODE/LIBARIES
  263.          Version 5.0a is NOT object code or library compatable with
  264.          earlier versions of Aztec C.  The reason for this is that
  265.          the default register usage conventions of the compiler have been
  266.          changed from that of previous versions.  This means that all
  267.          source code must be re-compiled for use with 5.0a.  In addition,
  268.          assembly code called by C must be changed to reflect the new
  269.          register conventions.
  270.  
  271.          DEFAULT INTEGER SIZE
  272.          The default integer size has been changed from 16-bits to 32-bits.
  273.          This was done to make it easier to port code from other systems,
  274.          as well as to minimize crashing in 'beginner' code.  Because of
  275.          this, the library naming conventions have also changed.  The
  276.          libraries now map in this fashion:
  277.  
  278.              3.6a   |  5.0a
  279.          ---------------------
  280.              c.lib  |   c16.lib     small code/small data 16-bit ints
  281.             cl.lib  |  cl16.lib     large code/large data 16-bit ints
  282.           cl32.lib  |    cl.lib     large code/large data 32-bit ints
  283.            c32.lib  |     c.lib     small code/small data 32-bit ints
  284.  
  285.           DEFAULT MATH LIBRARIES
  286.           A new math library, based on Manx IEEE floating point, has been
  287.           added.  This library is the most accurate of all the libraries,
  288.           and is now set to be the default.  The libraries from 3.6a to
  289.           5.0a map in this fashion with regards to naming conventions:
  290.  
  291.              3.6a   |  5.0a
  292.          ---------------------
  293.             ------  |  m.lib        Manx IEEE floating point
  294.             ma.lib  |  ma.lib       Amiga IEEE floating point
  295.              m.lib  |  mf.lib       Motorola Fast Floating Point (FFP)
  296.             m8.lib  |  m8.lib       68881 Coprocessor
  297.  
  298.           BITFIELDS
  299.           Bitfields may only be of type 'int' or 'unsigned int' in version
  300.           5.0a.  Previous versions also allowed bitfields to be of type
  301.           'short' and 'unsigned short'.
  302.  
  303.           FUNCTIONS.H
  304.           The declarations in the functions.h header file now include
  305.           ANSI prototyping of Amiga function arguments, in addition to
  306.           declaring function return types.  This can cause a large number
  307.           of ptr/ptr and ptr/int conversion warnings to be generated in
  308.           certain types of programs.  If you receive a large number of
  309.           these types of warnings in code which includes functions.h and
  310.           do not wish to make the necessary corrections, you will have to
  311.           remove the inclusion of functions.h and declare function return
  312.           types yourself.
  313.  
  314.           The majority of problems will most likely be with messages and
  315.           I/O requests.  In most cases warnings in these areas can be
  316.           cured with a simple cast in the function call.  For example:
  317.  
  318.                AbortIO ((struct IORequest *)req);
  319.                ReplyMsg ((struct Message *)msg);
  320.  
  321.           Simple casts of this type should remove 90%-95% of warnings due to
  322.           prototypes in typical code.
  323.  
  324.  
  325.                             VERSION 5.0A NOTES
  326.                             ------------------
  327.  
  328. SDB
  329. ---
  330.      There are now two versions of SDB - SDB and SDBF.  The two
  331.      programs are identical except in the handling of floating
  332.      point.  SDB is designed for use with code compiled for use
  333.      with the m.lib (MANX IEEE), ma.lib (AMIGA IEEE), or m8.lib
  334.      (68881 coprocessor) libraries.  SDBF should be used with
  335.      programs compiled with mf.lib (Motorola Fast Floating Point,
  336.      FPP).
  337.  
  338. KNOWN BUGS
  339. ----------
  340. The following are known bugs in the 5.0a system:
  341.  
  342.     1-- The compiler occasionally generates a fatal error message
  343.         "Out of Registers".  This is an internal error, and cannot be
  344.         fixed by the user.  The workaround for this is to compile the
  345.         problem module with the -at option, and then look at the generated
  346.         assembly source.  The last source line for which code is generated
  347.         is the line which is causing the problem.  This line should be
  348.         split into one or more source lines to avoid the problem.  This
  349.         error occurs only on very complex expressions.
  350.  
  351.     2-- The compiler occasionsally generates the internal error message
  352.         'Attempt to release item already free'.  This is an internal
  353.         error, and may be worked around the same manner as (1) above.
  354.  
  355.     3-- The ma.lib-libraries do not accurately convert float-type
  356.         variables to type double.  This is due to errors in the Amiga
  357.         resident library routines.
  358.  
  359.     4-- SDB occasionally prints the message "Line Table Botch" while
  360.         single-stepping through source.  The work around for this is
  361.         to re-arrange the ordering of your object modules on your
  362.         link invocation line, re-link, and then re-invoke SDB.
  363.  
  364.     5-- The assembler incorrectly optimizes certain sequences and
  365.         terminates with an "ending PCs differ" error message.  This
  366.         problem is usually fixed by using the -n assembler switch to
  367.         disable optimiztion.
  368.  
  369.     6-- The 'make' utility will crash if it encounters a recursive 
  370.         dependency like:
  371.  
  372.             myfile.o: myfile.o
  373.  
  374.